//package org.liangsy.gateway.filter;
//
//import org.springframework.cloud.gateway.filter.GatewayFilterChain;
//import org.springframework.cloud.gateway.filter.GlobalFilter;
//import org.springframework.http.server.reactive.ServerHttpRequest;
//import org.springframework.web.server.ServerWebExchange;
//import reactor.core.publisher.Mono;
//
//import java.util.Arrays;
//import java.util.List;
//
//public class JwtAuthFilter implements GlobalFilter {
//
//    private static final List<String> WHITE_LIST = Arrays.asList(
//            "/auth/login",
//            "/auth/register",
//            "/swagger-ui/**",
//            "/v3/api-docs/**"
//    );
//
//    @Override
//    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
//        String path = exchange.getRequest().getURI().getPath();
//
//        // 白名单校验
//        if (isWhiteList(path)) {
//            return chain.filter(exchange);
//        }
//
//        // JWT校验
//        String token = extractToken(exchange.getRequest());
//        if (!JwtUtils.validateToken(token)) {
//            return unauthorizedResponse(exchange);
//        }
//
//        // 传递用户信息
//        ServerHttpRequest request = exchange.getRequest().mutate()
//                .header("X-User-Id", JwtUtils.getUserId(token))
//                .build();
//
//        return chain.filter(exchange.mutate().request(request).build());
//    }
//
//    private boolean isWhiteList(String path) {
//        return WHITE_LIST.stream().anyMatch(path::startsWith);
//    }
//}